package com.itfreer.power.service.power;

import java.util.List;
import java.util.Map;

import com.itfreer.power.entity.user.VUserInfoEntity;
import com.itfreer.power.entity.useredit.UserSysAuthoEntity;

/**
 * 定义对外的综合服务接口
 */
public interface PowerService {
	
	/**
	 * 获取用户
	 * 
	 * @param userid
	 *            唯一值
	 * @return
	 */
	VUserInfoEntity getUser(String userid, String accounts);
	
	/**
	 * 通过帐号注册
	 * @param accounts
	 * @param password
	 * @param rPassword
	 */
	boolean userRegister(String accounts, String password, String rPassword);

	/**
	 * 设置密码
	 * 
	 * @return
	 */
	boolean setPassword(String userid, String oldPwd, String newPwd);
	
	/**
	 * 密码验证
	 * 
	 * @return
	 */
	boolean checkPassword(String accounts, String sPwd);
	
	/**
	 * 获取用户可访问的应用ID集
	 * 
	 * @param userid
	 *            唯一值
	 * @return
	 */
	List<String> getUserService(String userid);
	
	/**
	 * 添加用户可访问应用
	 * @param userid
	 * @param service
	 */
	boolean addUserService(String userid, String service);
	
	/**
	 * 移除用户可访问应用
	 * @param userid
	 * @param service
	 */
	boolean removeUserService(String userid, String service);
	
	/**
	 * 获取用户可访问菜单ID集
	 * 
	 * @param userid
	 *            唯一值
	 * @param serviceId
	 * @return
	 */
	List<String> getUserMenus(String userid, String serviceId);
	
	/**
	 * 获取用户可访问url地址集
	 * 
	 * @param userid
	 *            唯一值
	 * @param serviceId
	 * @return
	 */
	List<String> getUserUrls(String userid, String serviceId);
	
	/**
	 * 获取用户数据权限集
	 * 
	 * @param userid 唯一值
	 * @param serviceId
	 * @return
	 */
	Map<String, List<String>> getUserDatas(String userid, String serviceId);

	/**
	 * 获取用户可访问的地图图层集
	 * 
	 * @param userid
	 *            唯一值
	 * @param serviceId
	 * @return
	 */
	Map<String, List<String>> getUserMapLayers(String userid, String serviceId);

	/**
	 * 获取用户可访问的地图范围集
	 * 
	 * @param userid
	 *            唯一值
	 * @param serviceId
	 * @return
	 */
	List<String> getUserMapExtent(String userid, String serviceId);
	
	/**
	 * 获取用户可访问的角色ID集
	 * 
	 * @param userid
	 *            唯一值
	 * @return
	 */
	List<String> getUserRoles(String userid);
	
	/**
	 * 获取用户可访问的应用ID集
	 * 
	 * @param userid
	 *            唯一值
	 * @return
	 */
	List<String> getRoleService(List<String> roles);
	
	/**
	 * 获取用户可访问菜单ID集
	 * 
	 * @param userid
	 *            唯一值
	 * @param serviceId
	 * @return
	 */
	List<String> getRoleMenus(List<String> roles, String serviceId);
	
	/**
	 * 获取用户可访问url地址集
	 * 
	 * @param userid
	 *            唯一值
	 * @param serviceId
	 * @return
	 */
	List<String> getRoleUrls(List<String> roles, String serviceId);
	
	/**
	 * 获取用户数据权限集
	 * 
	 * @param userid
	 *            唯一值
	 * @param serviceId
	 * @return
	 */
	Map<String, List<String>> getRoleDatas(List<String> roles, String serviceId);
	
	/**
	 * 获取用户可访问的地图图层集
	 * 
	 * @param userid
	 *            唯一值
	 * @param serviceId
	 * @return
	 */
	Map<String, List<String>> getRoleMapLayers(List<String> roles, String serviceId);
	
	/**
	 * 获取用户可访问的地图范围集
	 * 
	 * @param userid
	 *            唯一值
	 * @param serviceId
	 * @return
	 */
	List<String> getRoleMapExtent(List<String> roles, String serviceId);
	
	/**
	 * 获取系统可访问url地址集
	 * 
	 * @param sysid 		系统ID值
	 * @param syspwd		系统访问码
	 * @return
	 */
	List<String> getSysUrls(String sysid, String syspwd);
	
	/**
	 * 通过系统id获取用户申请表系统信息（授权/取消授权）
	 * @param sysId
	 * @return
	 */
	List<UserSysAuthoEntity> getUserSysAuthoEntitys(String sysId);
}
